package com.example.demo.service;

import com.example.demo.dto.ApiResponse;
import com.example.demo.dto.UserUpdateRequest;
import com.example.demo.dto.UserInfoDTO;
import com.example.demo.entity.User;
import com.example.demo.entity.UserType;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;

public interface UserService {
    User createUser(User user);
    ApiResponse<?> updateUser(Long id, User user);
    void deleteUser(Long id);
    ApiResponse<?> getUserById(Long id);
    ApiResponse<?> getUserByUsername(String username);
    List<User> getAllUsers();
    List<User> getUsersByType(UserType userType);
    List<User> getUsersByCollege(String college);
    boolean existsByUsername(String username);
    boolean existsByStudentId(String studentId);
    boolean existsByTeacherId(String teacherId);
    Object updateProfile(String username, UserUpdateRequest request);
    ApiResponse<?> updateAvatar(Long id, MultipartFile file);
    User findByUsername(String username);
    UserInfoDTO getUserInfo(String username);
} 